很久前写的代码,3种模式,现在发出来与大家分享,其实这块的思路还有需要些优化,望大家来优化探讨

// 左右侧滚动 (左右两边DIV高度不确定,获取左右两边DIV高度,左侧高于右侧,则右侧浮动,否则,左侧滚动)
function HomeScroll(a,b){if((navigator.userAgent.match(/(iPhone|iPad|iPod|Android|ios)/i))){return}var c=$(a),d=$(b);if(c.length>0&&d.length>0){function g(){var g=$(window).scrollLeft(),h=$(window).scrollTop(),i=$(document).height(),j=$(window).height(),k=c.height(),l=d.height(),e=d.offset().top,f=c.offset().top,m=k>l?f:e,n=k>l?d:c,o=k>l?c.offset().left+c.outerWidth(!0)-g:d.offset().left-c.outerWidth(!0)-g,p=k>l?l:k,q=k>l?k:l,r=parseInt(q-j)-parseInt(p-j);$(a+","+b).removeAttr("style"),j>i||p>q||m>h||p-j+m>=h?n.removeAttr("style"):j>p&&h-m>=r||p>j&&h-m>=q-j?n.attr("style","margin-top:"+r+"px;"):n.attr("style","_margin-top:"+(h-m)+"px;position:fixed;left:"+o+"px;"+(j>p?"top":"bottom")+":0;")}$(window).resize(g).scroll(g).trigger("resize")}}

// 左侧滚动 (明确右边DIV高于左侧,则左侧浮动)
function HomeScrollL(a,d){if((navigator.userAgent.match(/(iPhone|iPad|iPod|Android|ios)/i))){return}var e=$(a),c=$(d);if(e.length>0&&c.length>0){function f(){var m=$(window).scrollLeft(),n=$(window).scrollTop(),k=$(document).height(),h=$(window).height(),g=e.height(),j=c.height(),b=c.offset().top,l=c.offset().left-e.outerWidth(!0)-m,i=parseInt(j-h)-parseInt(g-h);if(k<h||g>j||n<b||n<=g-h+b){e.removeAttr("style")}else{if(h>g&&(n-b)>=i||h<g&&(n-b)>=(j-h)){e.attr("style","margin-top:"+i+"px;")}else{e.attr("style","_margin-top:"+(n-b)+"px;position:fixed;left:"+l+"px;"+(h>g?"top":"bottom")+":0;")}}}$(window).resize(f).scroll(f).trigger("resize")}};

// 右侧滚动 (明确左侧DIV高于右侧,则右侧浮动)
function HomeScrollR(a,d){if((navigator.userAgent.match(/(iPhone|iPad|iPod|Android|ios)/i))){return}var e=$(a),c=$(d);if(e.length>0&&c.length>0){function f(){var m=$(window).scrollLeft(),n=$(window).scrollTop(),k=$(document).height(),h=$(window).height(),g=e.height(),j=c.height(),b=e.offset().top,l=e.offset().left+e.outerWidth(!0)-m,i=parseInt(g-h)-parseInt(j-h);if(k<h||j>g||n<b||n<=j-h+b){c.removeAttr("style")}else{if(h>j&&(n-b)>=i||h<j&&(n-b)>=(g-h)){c.attr("style","margin-top:"+i+"px;")}else{c.attr("style","_margin-top:"+(n-b)+"px;position:fixed;left:"+l+"px;"+(h>j?"top":"bottom")+":0;")}}}$(window).resize(f).scroll(f).trigger("resize")}};

左右侧滚动调用:HomeScroll(“Mid_L”,"Mid_R")
左侧滚动调用:HomeScrollL(“Mid_L”,"Mid_R")
右侧滚动调用:HomeScrollR(“Mid_L”,"Mid_R")
js中做了特殊情况处理,比如ipad平板,浮动会有问题,直接就不浮动了,里面有为了更好的兼容IE6等,使用了margin-top方式,如果不考虑IE9以下浏览器,这代码还可以精简,写起来更简单明了


hmhz
106 声望0 粉丝